/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package recursos;

import java.util.List;
import modelos.DetalleOrden;
import modelos.Orden;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;

/**
 *
 * @Autor Gustavo Enrique Ruiz Cisneros <Desarrollador DSI/CGTI>
 * @Workspace DSI
 * @Fecha 3/10/2013
 */
public final class XML {

    private Document documento;
    private XMLOutputter salida = new XMLOutputter(Format.getPrettyFormat());

    public XML(Orden orden) {
        this.documento = createXML(orden);
    }

    public Element crearNodo(String tagElemento, String contenido) {

        Element nodo = new Element(tagElemento).addContent(contenido);
        return nodo;
    }

    public Element crearNodo(String tagElemento) {

        Element nodo = new Element(tagElemento);

        return nodo;
    }

    public Element crearNodoDetalle(List<DetalleOrden> detallesOrden) {
        Element detalle = crearNodo("Detalle");// new Element("Detalle");
        for (DetalleOrden detalleOrden : detallesOrden) {
            Element linea = crearNodo("Linea");
            Element producto = crearNodo("Producto");
            producto.addContent(crearNodo("IdProducto", detalleOrden.getIdProducto().toString()));
            producto.addContent(crearNodo("DescProducto", detalleOrden.getDescProducto()));
            linea.addContent(producto);
            linea.addContent(crearNodo("Cantidad", detalleOrden.getCantidad().toString()));
            linea.addContent(crearNodo("Precio", detalleOrden.getPrecio().toString()));
            detalle.addContent(linea);
        }
        return detalle;
    }

    public Document createXML(Orden orden) {
        Element raiz = crearNodo("CatOrdenes");
        Element eOrder = crearNodo("Orden");

        eOrder.addContent(crearNodo("IdOrden", orden.getIdOrden().toString()));
        eOrder.addContent(crearNodo("FechaOrden", orden.getFechaOrden()));

        Element cliente = crearNodo("Cliente");
        cliente.addContent(crearNodo("IdCliente", orden.getIdCliente().toString()));
        cliente.addContent(crearNodo("NomCliente", orden.getNomCliente()));
        cliente.addContent(crearNodo("DirCliente", orden.getDirCliente()));
        
        eOrder.addContent(cliente);
        eOrder.addContent(crearNodoDetalle(orden.getDetalleOrden()));

        raiz.addContent(eOrder);
        documento = new Document(raiz);
        return documento;
    }

    public String getXMLString() {
        return salida.outputString(documento);
    }
}
